﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq.SqlClient;
using System.Reflection;

namespace BussinesCosea
{
    public partial class CoseaDirectos : IDisposable
    {
        #region SolicitudEmpledo

        public int ObtenFolioSolicitud()
        {
            int folio = 0;
            try
            {
                folio = Folio();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            return folio;

        }

        public int GuardaSolicitudEmpleo(SolicitudEmpleo solicitud, TipoGuardado tipo)
        {
            int numeroSolicitud = 0;
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);

                if (tipo == TipoGuardado.NuevoRegistro)
                {
                    //numeroSolicitud = Folio();
                    //solicitud.IdSolicitud = numeroSolicitud;
                    numeroSolicitud = solicitud.IdSolicitud;
                    db.SolicitudEmpleos.InsertOnSubmit(solicitud);
                }
                else
                {
                    SolicitudEmpleo sol = db.SolicitudEmpleos.Single(c => c.IdSolicitud == solicitud.IdSolicitud);
                    //Es probable q no funcione esta forma de actualizar el registro porque se tiene que hacer campo x campo
                    //pero esta opcion del sistema no necesita actualizarse unicamente se da de alta.
                    //si se desea actualizar se tiene que hacer una igualación campo por campo                                        
                    //CopyPropertiesSolicitud(solicitud, sol);
                    //sol.IdSolicitud = solicitud.IdSolicitud;

                    sol.PuestoSolicitado = solicitud.PuestoSolicitado;
                    sol.SueldoMensualDeseado = solicitud.SueldoMensualDeseado;
                    //sol.Foto = solicitud.Foto;
                    sol.Nombre1 = solicitud.Nombre1;
                    sol.Nombre2 = solicitud.Nombre2;
                    sol.Materno = solicitud.Materno;
                    sol.Paterno = solicitud.Paterno;
                    sol.Edad = solicitud.Edad;
                    sol.Domicilio = solicitud.Domicilio;
                    sol.Colonia = solicitud.Colonia;
                    sol.Sexo = solicitud.Sexo;
                    sol.FechaNacimiento = solicitud.FechaNacimiento;
                    sol.LugarNacimiento = solicitud.LugarNacimiento;
                    sol.Nacionalidad = solicitud.Nacionalidad;
                    sol.ViveCon = solicitud.ViveCon;
                    sol.Estatura = solicitud.Estatura;
                    sol.Peso = solicitud.Peso;
                    sol.PersonasDependientes = solicitud.PersonasDependientes;
                    sol.EstadoCivil = solicitud.EstadoCivil;
                    sol.RFC = solicitud.RFC;
                    sol.Imss = solicitud.Imss;
                    sol.Cartilla = solicitud.Cartilla;
                    sol.Pasaporte = solicitud.Pasaporte;
                    sol.LicenciaManejo = solicitud.LicenciaManejo;
                    sol.NumeroLicencia = solicitud.NumeroLicencia;
                    sol.NumeroDocumentoExtranjero = solicitud.NumeroDocumentoExtranjero;
                    sol.EstadoSalud = solicitud.EstadoSalud;
                    sol.EnfermedadCronica = solicitud.EnfermedadCronica;
                    sol.CualEnfermedad = solicitud.CualEnfermedad;
                    sol.PracticaDeporte = solicitud.PracticaDeporte;
                    sol.ClubDeportivo = solicitud.ClubDeportivo;
                    sol.PasatiempoFavorito = solicitud.PasatiempoFavorito;
                    sol.MetaVida = solicitud.MetaVida;
                    sol.Padre = solicitud.Padre;
                    sol.PadreVive = solicitud.PadreVive;
                    sol.DomicilioPadre = solicitud.DomicilioPadre;
                    sol.OcupacionPadre = solicitud.OcupacionPadre;
                    sol.Madre = solicitud.Madre;
                    sol.MadreVive = solicitud.MadreVive;
                    sol.DomicilioMadre = solicitud.DomicilioMadre;
                    sol.OcupacionMadre = solicitud.OcupacionMadre;
                    sol.Esposa_o = solicitud.Esposa_o;
                    sol.Esposa_oVive = solicitud.Esposa_oVive;
                    sol.DomicilioEsposa_o = solicitud.DomicilioEsposa_o;
                    sol.OcupacionEsposa_o = solicitud.OcupacionEsposa_o;
                    sol.Primaria = solicitud.Primaria;
                    sol.DomicilioPrimaria = solicitud.DomicilioPrimaria;
                    sol.AnoInicioPrimaria = solicitud.AnoInicioPrimaria;
                    sol.AnoFinPrimaria = solicitud.AnoFinPrimaria;
                    sol.AnosPrimaria = solicitud.AnosPrimaria;
                    sol.DocumentoPrimaria = solicitud.DocumentoPrimaria;
                    sol.Secundaria = solicitud.Secundaria;
                    sol.DomicilioSecundaria = solicitud.DomicilioSecundaria;
                    sol.AnoInicioSecundaria = solicitud.AnoInicioSecundaria;
                    sol.AnoFinSecundaria = solicitud.AnoFinSecundaria;
                    sol.AnosSecundaria = solicitud.AnosSecundaria;
                    sol.DocumentoSecundaria = solicitud.DocumentoSecundaria;
                    sol.Bachillerato = solicitud.Bachillerato;
                    sol.DomicilioBachillerato = solicitud.DomicilioBachillerato;
                    sol.AnoIniciolBachillerato = solicitud.AnoIniciolBachillerato;
                    sol.AnoFinBachillerato = solicitud.AnoFinBachillerato;
                    sol.AnosBachillerato = solicitud.AnosBachillerato;
                    sol.DocumentoBachillerato = solicitud.DocumentoBachillerato;
                    sol.Licenciatura = solicitud.Licenciatura;
                    sol.DomicilioLicenciatura = solicitud.DomicilioLicenciatura;
                    sol.AnoInicioLicenciatura = solicitud.AnoInicioLicenciatura;
                    sol.AnoFinLicenciatura = solicitud.AnoFinLicenciatura;
                    sol.AnosLicenciatura = solicitud.AnosLicenciatura;
                    sol.DocumentoLicenciatura = solicitud.DocumentoLicenciatura;
                    sol.ComercioTecnica = solicitud.ComercioTecnica;
                    sol.DomicilioComercioTecnica = solicitud.DomicilioComercioTecnica;
                    sol.AnoInicioComercioTecnica = solicitud.AnoInicioComercioTecnica;
                    sol.AnoFinComercioTecnica = solicitud.AnoFinComercioTecnica;
                    sol.AnosComercioTecnica = solicitud.AnosComercioTecnica;
                    sol.DocimentoComercioTecnica = solicitud.DocimentoComercioTecnica;
                    sol.EstudiosActuales = solicitud.EstudiosActuales;
                    sol.Horario = solicitud.Horario;
                    sol.CursoCarrera = solicitud.CursoCarrera;
                    sol.Grado = solicitud.Grado;
                    sol.Idiomas = solicitud.Idiomas;
                    sol.FuncionesOficina = solicitud.FuncionesOficina;
                    sol.MaquinasOficinaTaller = solicitud.MaquinasOficinaTaller;
                    sol.OtrosTrabajosFuncionesDomina = solicitud.OtrosTrabajosFuncionesDomina;
                    sol.ComoSupoEmpleo = solicitud.ComoSupoEmpleo;
                    sol.Cuales = solicitud.Cuales;
                    sol.ParientesTrabajando = solicitud.ParientesTrabajando;
                    sol.NombreParientesTrabajando = solicitud.NombreParientesTrabajando;
                    sol.HaAfianzado = solicitud.HaAfianzado;
                    sol.CompaniaAfianzadora = solicitud.CompaniaAfianzadora;
                    sol.HaSindicado = solicitud.HaSindicado;
                    sol.Sindicato = solicitud.Sindicato;
                    sol.SeguroVida = solicitud.SeguroVida;
                    sol.CompaniaSeguroVida = solicitud.CompaniaSeguroVida;
                    sol.PuedeViajar = solicitud.PuedeViajar;
                    sol.RazonesViajar = solicitud.RazonesViajar;
                    sol.CambioResidencia = solicitud.CambioResidencia;
                    sol.RazonesCambioResidencia = solicitud.RazonesCambioResidencia;
                    sol.FechaParaPresentarseTrabajar = solicitud.FechaParaPresentarseTrabajar;
                    sol.OtrosIngresos = solicitud.OtrosIngresos;
                    sol.CualesIngresos = solicitud.CualesIngresos;
                    sol.CuantoIngresos = solicitud.CuantoIngresos;
                    sol.ConyugeTrabaja = solicitud.ConyugeTrabaja;
                    sol.ConyugeDonde = solicitud.ConyugeDonde;
                    sol.ImporteConyuge = solicitud.ImporteConyuge;
                    sol.CasaPropia = solicitud.CasaPropia;
                    sol.ValorCasa = solicitud.ValorCasa;
                    sol.AutoPropio = solicitud.AutoPropio;
                    sol.MarcaAuto = solicitud.MarcaAuto;
                    sol.ModeloAuto = solicitud.ModeloAuto;
                    sol.PagaRenta = solicitud.PagaRenta;
                    sol.Renta = solicitud.Renta;
                    sol.TieneDeudas = solicitud.TieneDeudas;
                    sol.ConQuienDeudas = solicitud.ConQuienDeudas;
                    sol.ImporteDeudas = solicitud.ImporteDeudas;
                    sol.AbonoMensual = solicitud.AbonoMensual;
                    sol.GastosMensuales = solicitud.GastosMensuales;
                    sol.Comentarios = solicitud.Comentarios;
                    sol.FechaAlta = solicitud.FechaAlta;
                    sol.Curp = solicitud.Curp;
                    sol.Fuma = solicitud.Fuma;
                    sol.Alcohol = solicitud.Alcohol;
                    sol.Tatuaje = solicitud.Tatuaje;
                    sol.Perforaciones = solicitud.Perforaciones;
                    sol.Telefono = solicitud.Telefono;
                    sol.TrabajoEnCosea = solicitud.TrabajoEnCosea;
                    sol.Conflictiva = solicitud.Conflictiva;
                    sol.TieneExpediente = solicitud.TieneExpediente;
                    sol.CompañiaRenta = solicitud.CompañiaRenta;
                    sol.Telefono2 = solicitud.Telefono2;
                    sol.Celular = solicitud.Celular;
                    sol.TelefonoRecados = solicitud.TelefonoRecados;
                    sol.OtroEstadoCivil = solicitud.OtroEstadoCivil;
                    sol.EstadoDondeVive = solicitud.EstadoDondeVive;
                    sol.Accidentes = solicitud.Accidentes;
                    sol.EnfermedadCronica2 = solicitud.EnfermedadCronica2;
                    sol.CualEnfermedad2 = solicitud.CualEnfermedad2;
                    sol.HaTenidoAccidentes = solicitud.HaTenidoAccidentes;
                    sol.CualAccidente = solicitud.CualAccidente;
                    sol.HaTenidoAccidentes2 = solicitud.HaTenidoAccidentes2;
                    sol.CualAccidente2 = solicitud.CualAccidente2;
                    sol.HaTenidoOperaciones = solicitud.HaTenidoOperaciones;
                    sol.CualOperacion = solicitud.CualOperacion;
                    sol.HaTenidoOperaciones2 = solicitud.HaTenidoOperaciones2;
                    sol.CualOperacion2 = solicitud.CualOperacion2;
                    sol.DispositivosMedicos = solicitud.DispositivosMedicos;
                    sol.OtroDispositivoMedico = solicitud.OtroDispositivoMedico;
                    sol.Curso1 = solicitud.Curso1;
                    sol.Curso2 = solicitud.Curso2;
                    sol.Curso3 = solicitud.Curso3;
                    sol.Curso4 = solicitud.Curso4;
                    sol.Curso5 = solicitud.Curso5;
                    sol.ProcesoLegalenTramite = solicitud.ProcesoLegalenTramite;
                    sol.OtrosIngresosFamiliares = solicitud.OtrosIngresosFamiliares;
                    sol.CantidadIngresosFamiliares = solicitud.CantidadIngresosFamiliares;
                    sol.NumeroDependientes = solicitud.NumeroDependientes;
                    sol.Puntaje = solicitud.Puntaje;
                    sol.EscolaridadMaxima = solicitud.EscolaridadMaxima;
                    sol.TieneExperiencia = solicitud.TieneExperiencia;
                    sol.IdPuesto = solicitud.IdPuesto;
                    sol.CBHijos = solicitud.CBHijos;
                    sol.CBConyuge = solicitud.CBConyuge;
                    sol.CBPadres = solicitud.CBPadres;
                    sol.CBOtros = solicitud.CBOtros;
                    sol.Email = solicitud.Email;
                    sol.Email2 = solicitud.Email2;                   
                }
                db.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw new Exception("Error al guardar solicitud de empleo");
            }
            finally
            {
                db = null;
            }

            return numeroSolicitud;
        }

        public void EliminaSolicitud(int numSolicitud)
        {
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                SolicitudEmpleo sol = db.SolicitudEmpleos.Single(c => c.IdSolicitud == numSolicitud);
                db.SolicitudEmpleos.DeleteOnSubmit(sol);
                db.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }
        }

        public SolicitudEmpleo BuscaSolicitudEmpleo(int numSolicitud)
        {
            SolicitudEmpleo solicitud = new SolicitudEmpleo();

            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                SolicitudEmpleo sol = db.SolicitudEmpleos.Single(c => c.IdSolicitud == numSolicitud);
                solicitud = sol;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }
            return solicitud;
        }

        public bool buscaSolicitudXRFC(string rfc)
        {
            bool resul = false;
            SolicitudEmpleo solicitud = new SolicitudEmpleo();

            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                SolicitudEmpleo sol = db.SolicitudEmpleos.Single(c => c.RFC == rfc);
                


                if (sol.RFC.Trim() == rfc)
                    resul = true;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }

            return resul;
        }

        public bool buscaSolicitudXCURP(string curp)
        {
            bool resul = false;
            SolicitudEmpleo solicitud = new SolicitudEmpleo();

            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                SolicitudEmpleo sol = db.SolicitudEmpleos.Single(c => c.Curp == curp);
                if (sol.Curp.Trim() == curp)
                    resul = true;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }

            return resul;
        }

        public List<SolicitudEmpleo> ObtenSolicitudes()
        {
            List<SolicitudEmpleo> resultado = new List<SolicitudEmpleo>();
            db = new bdCoseaDirectosDataContext(_cadenaConexion);

            try
            {
                var soli =
                    (from sol in db.SolicitudEmpleos
                     select sol);
                resultado = soli.ToList<SolicitudEmpleo>();
            }
            catch (Exception ex)
            {
                throw new Exception("Error al buscar registros:" + ex.Message);
            }
            finally
            {
                db = null;
            }

            return resultado;
        }

        public List<SolicitudEmpleo> BuscaSolicitudes(string criterio)
        {
            List<SolicitudEmpleo> resultado = new List<SolicitudEmpleo>();
            db = new bdCoseaDirectosDataContext(_cadenaConexion);

            //sol.Nombre2 + sol.Paterno + sol.Materno == criterio

            //(from sol in db.SolicitudEmpleos
            // where sol.Nombre1 == criterio ||
            // sol.Nombre2 == criterio ||
            // sol.Paterno == criterio ||
            // sol.Materno == criterio
            // select sol);

            //(from sol in db.SolicitudEmpleos
            // where SqlMethods.Like(sol.Nombre1 +
            // sol.Nombre2 + sol.Paterno +
            // sol.Materno, "%" + criterio + "%")
            // select sol);

            try
            {
                var soli =
                    (from sol in db.SolicitudEmpleos
                     where sol.Nombre1.StartsWith(criterio) ||
                     sol.Paterno.StartsWith(criterio) ||
                     sol.Materno.StartsWith(criterio) ||
                     sol.Nombre2.StartsWith(criterio) ||
                     sol.Domicilio.StartsWith(criterio) ||
                     sol.Colonia.StartsWith(criterio) ||
                     sol.LugarNacimiento.StartsWith(criterio) ||
                     sol.PuestoSolicitado.StartsWith(criterio) ||
                     sol.Curp.StartsWith(criterio) ||
                     sol.RFC.StartsWith(criterio)
                     select sol);
                resultado = soli.ToList<SolicitudEmpleo>();
            }
            catch (Exception ex)
            {
                throw new Exception("Error al buscar registros: " + ex.Message);
            }
            finally
            {
                db = null;
            }

            return resultado;

        }

        public List<BuscaSolicitudesEmpleoResult> BuscaSolEmpleo(string criterio)
        {

            List<BuscaSolicitudesEmpleoResult> res = new List<BuscaSolicitudesEmpleoResult>();

            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);

                res = db.BuscaSolicitudesEmpleo(criterio).ToList<BuscaSolicitudesEmpleoResult>();

            }
            catch (Exception ex)
            {
                throw new Exception("Error al BuscaSolEmpleo " + ex.Message);
            }
            finally
            {
                db = null;
            }

            return res;
        }

        public void PresSeleccionarSolicitudServicio(Preseleccion prese)
        {
            db = new bdCoseaDirectosDataContext(_cadenaConexion);
            try
            {
                prese.Vigente = true;
                prese.FechaPreseleccion = DateTime.Now;
                db.Preseleccions.InsertOnSubmit(prese);
                db.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw new Exception("Error al preseleccionar: " + ex.Message);
            }
            finally
            {
                db = null;
            }
        }

        public bool ValidaPreseleccionSolicitud(int idSolicitud, ref string idSol,
            ref string idOr, ref string coments)
        {
            bool res = false;

            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);


                var resultado = db.SolicitudEmpleos.Join(
                    db.Preseleccions,
                    f => f.IdSolicitud,
                    (Preseleccion g) => g.IdSolicitud,
                    (f, g) => new
                    {
                        IDSolicitud = f.IdSolicitud,
                        IDOrden = g.IdOrden,
                        Comentarios = g.Comentarios

                    }).Where(f => f.IDSolicitud == idSolicitud);

                if (resultado.Count() > 0)
                    res = true;

                foreach (var item in resultado)
                {
                    idSol = item.IDSolicitud.ToString();
                    idOr = item.IDOrden.ToString();
                    coments = item.Comentarios;
                }


            }
            catch (Exception ex)
            {
                throw new Exception("Error al ValidaPreseleccionSolicitud: " + ex.Message);
            }

            return res;
        }






        #endregion

        #region HijosSolicitud

        public void GuardaHijoSolicitud(HijosSolicitud hijo, TipoGuardado tipo, int numeroSolicitud)
        {

            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);

                if (tipo == TipoGuardado.NuevoRegistro)
                {
                    hijo.IdSolicitud = numeroSolicitud;
                    //hijo.IdHijosSolicitud = db.HijosSolicituds.Count() + 1;
                    db.HijosSolicituds.InsertOnSubmit(hijo);
                }
                else
                {
                    HijosSolicitud hi = db.HijosSolicituds.Single(c => c.IdHijosSolicitud == hijo.IdHijosSolicitud);
                    hi.Nombre = hijo.Nombre;
                    hi.IdSolicitud = numeroSolicitud;
                    hi.Edad = hijo.Edad;
                }
                db.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }
        }

        public void EliminaHijoSolicitud(int idHijo)
        {
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                HijosSolicitud hijo = db.HijosSolicituds.Single(c => c.IdHijosSolicitud == idHijo);
                db.HijosSolicituds.DeleteOnSubmit(hijo);
                db.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }
        }



        public List<HijosSolicitud> ObtenHijosPorSolicitud(int idSolicitud)
        {
            List<HijosSolicitud> res = new List<HijosSolicitud>();
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                var hijs =
                    (from hjs in db.HijosSolicituds
                     where hjs.IdSolicitud == idSolicitud
                     select hjs);
                res = hijs.ToList<HijosSolicitud>();
                //res = db.ObtenHijosXSolicitud(idSolicitud).ToList<ObtenHijosXSolicitudResult>();
            }
            catch (Exception ex)
            {
                throw new Exception("Error en ObtenHijosPorSolicitud: " + ex.Message);
            }
            finally
            {
                db = null;
            }

            return res;
        }

        public HijosSolicitud ObtenHijo(int idHijo)
        {
            HijosSolicitud hijo = new HijosSolicitud();
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                hijo = db.HijosSolicituds.Single(c => c.IdHijosSolicitud == idHijo);

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }
            return hijo;
        }

        public bool TieneHijosSolicitud(int idSolicitud)
        {
            bool result = false;
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                var hijs =
                    (from hjs in db.HijosSolicituds
                     where hjs.IdSolicitud == idSolicitud
                     select hjs);

                if (hijs.Count() > 0)
                    result = true;

            }
            catch (Exception ex)
            {
                throw new Exception("Error en TieneHijosSolicitud: " + ex.Message);
            }
            finally
            {
                db = null;
            }


            return result;
        }

        #endregion

        #region EmpleosSolicitud

        public void GuardaEmpleoSolicitud(EmpleosSolicitud empleoSolicitud, TipoGuardado tipo, int numeroSolicitud)
        {
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);

                if (tipo == TipoGuardado.NuevoRegistro)
                {

                    empleoSolicitud.IdSolicitud = numeroSolicitud;
                    //empleoSolicitud.IdEmpleosSolicitud = db.EmpleosSolicituds.Count() + 1;
                    db.EmpleosSolicituds.InsertOnSubmit(empleoSolicitud);
                }
                else
                {
                    EmpleosSolicitud ems = db.EmpleosSolicituds.Single(c => c.IdEmpleosSolicitud == empleoSolicitud.IdEmpleosSolicitud);

                    ems.IdEmpleosSolicitud = empleoSolicitud.IdEmpleosSolicitud;
                    ems.IdSolicitud = empleoSolicitud.IdSolicitud;
                    ems.Empresa = empleoSolicitud.Empresa;
                    ems.Telefono = empleoSolicitud.Telefono;
                    ems.Puesto = empleoSolicitud.Puesto;
                    ems.FechaInicio = empleoSolicitud.FechaInicio;
                    ems.FechaFinal = empleoSolicitud.FechaFinal;
                    ems.SueldoInicial = empleoSolicitud.SueldoInicial;
                    ems.SueldoFinal = empleoSolicitud.SueldoFinal;
                    ems.Motivo = empleoSolicitud.Motivo;
                    ems.NombreJefeDirecto = empleoSolicitud.NombreJefeDirecto;
                    ems.PuestoJefeDirecto = empleoSolicitud.PuestoJefeDirecto;
                    ems.PedirInformes = empleoSolicitud.PedirInformes;
                    ems.Razones = empleoSolicitud.Razones;

                }
                db.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }
        }

        public void EliminaEmpleoSolicitud(int idEmpleoSolicitud)
        {
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                EmpleosSolicitud emp = db.EmpleosSolicituds.Single(c => c.IdEmpleosSolicitud == idEmpleoSolicitud);
                db.EmpleosSolicituds.DeleteOnSubmit(emp);
                db.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }
        }

        public List<EmpleosSolicitud> ObtenEmpleosPorSolicitud(int idSolicitud)
        {
            List<EmpleosSolicitud> res = new List<EmpleosSolicitud>();
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                var emps =
                    (from em in db.EmpleosSolicituds
                     where em.IdSolicitud == idSolicitud
                     select em);
                res = emps.ToList<EmpleosSolicitud>();
                //res = db.ObtenEmpleosXSolicitud(idSolicitud).ToList<ObtenEmpleosXSolicitudResult>();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }

            return res;
        }

        public EmpleosSolicitud ObtenEmpleoSolicitud(int idEmpleoSolicitud)
        {
            EmpleosSolicitud emp = new EmpleosSolicitud();
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                emp = db.EmpleosSolicituds.Single(c => c.IdEmpleosSolicitud == idEmpleoSolicitud);

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db = null;
            }
            return emp;
        }

        public bool TieneEmpleosSolicitud(int idSolicitud)
        {
            bool result = false;
            try
            {
                db = new bdCoseaDirectosDataContext(_cadenaConexion);
                var emps =
                    (from em in db.EmpleosSolicituds
                     where em.IdSolicitud == idSolicitud
                     select em);

                if (emps.Count() > 0)
                    result = true;

            }
            catch (Exception ex)
            {
                throw new Exception("Error en TieneEmpleosSolicitud: " + ex.Message);
            }
            finally
            {
                db = null;
            }


            return result;
        }


        #endregion
        
    }
}
